home *** CD-ROM | disk | FTP | other *** search
- CONST MAXFILE=40 'If you need more filesin the list, raise the number.
- 'If you need more memory and can settle for less files
- 'in the list, then lower it.
-
- LIBRARY "graphics.library"
- DECLARE FUNCTION FreeSprite() LIBRARY
- DECLARE FUNCTION LONGINT GetSprite() LIBRARY
- DECLARE FUNCTION MoveSprite() LIBRARY
- DECLARE FUNCTION ChangeSprite() LIBRARY
- DECLARE SUB OpenList
- DECLARE SUB ProjectMenu
- DECLARE SUB MenuCreate
- DECLARE SUB Snapshot
- DECLARE SUB RemoveApp
- DECLARE SUB Adding(SHORTINT REM%)
- DECLARE SUB About
- DECLARE SUB TheSprite
- DECLARE SUB SpriteDisplay
- DECLARE SUB LONGINT SpriteHit
- DECLARE SUB OpenTheConfig
- DECLARE SUB MenuAction(one%)
- DECLARE SUB SelectItem(zero%,one%)
- DECLARE SUB MenuItems
- DECLARE SUB Finished
- DECLARE SUB WindowConfig
- DECLARE SUB STRING FileName$(pathname$)
- DECLARE SUB STRING Path$(pathname$)
-
- DIM apps$(MAXFILE) SIZE 80, NAME$(MAXFILE) SIZE 80
- ADDRESS mem_loc& : SHORTINT spritenum%
- CONST NULL =0&
- STRUCT SimpleSprite
- ADDRESS posctldata
- SHORTINT height
- SHORTINT x
- SHORTINT y
- SHORTINT num
- END STRUCT
- DECLARE STRUCT SimpleSprite SpriteStruct
- mem_loc&=ALLOC(36*SIZEOF(SHORTINT),0)
- DIM SHORTINT spriteData(36) ADDRESS mem_loc&
- SHORTINT i
- ON MENU GOTO StageFour
- StageOne:
- xm%=0:ym%=0:wm%=640:hm%=200:appsamt%=0 : pe%=0
- WINDOW 1,,(0,0)-(1,1),32
- CALL OpenTheConfig
- FOR i=0 TO 35 : READ spriteData(i): NEXT i
- SpriteStruct->height=16
- SpriteStruct->x=100
- SpriteStruct->y=100
- spritenum%=GetSprite(SpriteStruct,3)
- PALETTE 21,0,0,0
- PALETTE 22,1,1,1
- PALETTE 23,6/15,8/15,11/15
- CALL OpenList
- IF appsamt%>0 THEN CALL MenuItems
- StageTwo:
- CALL SpriteDisplay
- CALL ProjectMenu
- IF appsamt%>0 THEN CALL MenuCreate
- StageThree:
- SYSTEM "CD AmigaMenu:"
- WINDOW OUTPUT 2: CLS : PRINT"Ready.";
- MENU ON
- WHILE UCASE$(INKEY$)<>"Q"
- SLEEP FOR .02
- IF WINDOW(0)<>2 THEN
- CALL WindowConfig
- WINDOW CLOSE 2
- CALL FreeSprite(spritenum%)
- GOTO StageTwo
- END IF
- CALL WindowConfig
- WEND
- MENU STOP
- GOTO EndIt
-
- StageFour:
- zero%=MENU(0)
- one%=MENU(1)
- IF zero%=1 THEN
- IF ( (appsamt%+1)>MAXFILE and one%=1) THEN
- a%=MSGBOX("Exceeds limit! See AmigaMenu.doc for details!","Darn!")
- GOTO StageThree
- END IF
- CALL MenuAction(one%)
- IF one%=5 THEN GOTO EndIt
- END IF
- IF zero%>1 THEN CALL SelectItem(zero%,one%)
- GOTO StageThree
-
- Endit:
- CALL Finished
- END
-
- SUB SpriteDisplay
- SHARED xm%, ym%, hm%, wm%, spritenum%
- y%=0
- CALL TheSprite
- REPEAT
- SLEEP FOR .02
- x%=MOUSE(1):y%=MOUSE(2):z%=MOUSE(0)
- UNTIL (z%=-1) AND (x%<xm%+30) AND (x%>xm%) AND (y%>ym%) AND (y%<ym%+15)
- WINDOW 2,"AmigaMenu",(xm%,ym%)-(xm%+wm%,ym%+hm%),23
- CALL FreeSprite(spritenum%)
- WINDOW OUTPUT 2: CLS : PRINT"Setting things up...";
- END SUB
-
- SUB OpenList
- SHARED apps$,appsamt%
- OPEN "I",1,"AmigaMenu:AmigaMenu.files"
- appsamt%=1
- WHILE NOT EOF(1)
- LINE INPUT #1,apps$(appsamt%-1)
- ++appsamt%
- WEND
- CLOSE #1
- appsamt%=appsamt%-1
- END SUB
-
- SUB ProjectMenu
- SHARED appsamt%
- IF appsamt%>0 THEN
- activate%=1
- ELSE
- activate%=0
- END IF
-
- MENU 1,0,1,"AmigaMenu"
- MENU 1,1,1,"Add","a"
- MENU 1,2,activate%,"Remove"
- MENU 1,3,activate%,"Snapshot"
- MENU 1,4,1,"About"
- MENU 1,5,1,"Quit","q"
- END SUB
-
- SUB MenuCreate
- SHARED appsamt%,NAME$
- looper%=1
- start%=1
- StartLoop:
- ++looper%
- MENU looper%,0,1,"Applications:"
- MENU looper%,1,0,"-------------"
- FOR count%=start% TO (start%+9)
- MENU looper%,((count%+1)-((looper%-2)*10)),1,NAME$(count%-1)
- IF count%>=appsamt% THEN EXIT FOR
- NEXT count%
- start%=count%
- IF appsamt% > ((looper%-1)*10) THEN GOTO StartLoop:
- END SUB
-
- SUB Snapshot
- SHARED xm%,ym%,wm%,hm%
- IF (MSGBOX ("Save window size and position?","Yes","No"))=-1 THEN
- WINDOW OUTPUT 2 : CLS : PRINT"Storing the data to AmigaMenu.cfg...";
- CALL WindowConfig
- OPEN "O",#1,"AmigaMenu:AmigaMenu.cfg"
- WRITE #1,xm%,ym%,wm%,hm%
- CLOSE #1
- END IF
- END SUB
-
- SUB RemoveApp
- SHARED apps$,appsamt%
- r%=MSGBOX ("Click 'Okay' and then select the file to remove","Okay","Cancel")
- IF r%=0 THEN GOTO ExitRemove
- REPEAT
- a$=""
- MENU WAIT
- zero%=MENU(0)
- one%=MENU(1)
- FOR looper%=2 TO (INT(appsamt%/10)+2)
- IF zero%=looper% THEN
- FOR count%=2 TO 11
- IF one%=count% THEN
- a$=apps$(count%-2+(looper%-2)*10)
- EXIT FOR
- END IF
- NEXT count%
- END IF
- IF a$<>"" THEN EXIT FOR
- NEXT looper%
- UNTIL a$<>""
- r%=MSGBOX ("Do you wish to remove "+MID$( a$,2,(LEN(a$)-1) )+"?","Yes","No")
- IF r%=-1 THEN
- WINDOW OUTPUT 2 : CLS : PRINT"Removing ";a$;"...";
- apps$(count%-2+(looper%-2)*10)="remove.sjm"
- CALL Adding(1)
- END IF
- ExitRemove:
- END SUB
-
- SUB Adding(SHORTINT REM%)
- SHARED apps$, appsamt%, NAME$
- b$=FileName$(UCASE$(apps$(appsamt%-1))):storeflag%=0
-
- OPEN "O",1,"AmigaMenu:AmigaMenu.files"
- FOR count%=1 TO (appsamt%-1)
- IF REM%=0 and (b$<=ucase$(name$(count%-1)))and(storeflag%=0)and b$<>ucase$("remove.sjm") then
- PRINT #1,apps$(appsamt%-1)
- storeflag%=1
- END IF
- IF apps$(count%-1)<>"remove.sjm" THEN PRINT #1,apps$(count%-1)
- NEXT count%
- IF storeflag%=0 AND apps$(appsamt%-1)<>"remove.sjm" THEN PRINT #1,apps$(appsamt%-1)
- CLOSE 1
- WINDOW OUTPUT 2 : CLS : PRINT"Organizing the files...";
- MENU CLEAR
- CALL OpenList:CALL ProjectMenu
- IF appsamt%>0 THEN
- CALL MenuItems
- CALL MenuCreate
- END IF
- END SUB
-
- SUB About
- r%=MSGBOX ("AmigaMenu V1.0 by Sean J. Miller (December 1994)","I hate 'Abouts!'")
- END SUB
-
- SUB TheSprite
- SHARED mem_loc&, SpriteStruct, spritenum%, xm%, ym%, spriteData
- ChangeSprite(0,SpriteStruct,@spriteData)
- MoveSprite(0,SpriteStruct,((xm%\2)-1),ym%)
- END SUB
-
- SUB OpenTheConfig
- SHARED xm%, ym%,wm%, hm%
- a$="sys:c/assign AmigaMenu: "+CHR$(34)+CHR$(34)
- SYSTEM a$
- OPEN "I",1,"AmigaMenu:AmigaMenu.cfg"
- IF EOF(1) = 0 THEN INPUT #1,xm%,ym%,wm%,hm%
- CLOSE #1
- END SUB
-
- SUB MenuAction(one%)
- SHARED apps$,appsamt%
- IF one%=1 THEN
- a$=FILEBOX$("Select an Application")
- IF a$<>"" THEN
- b$=Path$(a$)
- if b$=a$ THEN a$="AmigaMenu:"+a$
- ++appsamt%
- wr%=MSGBOX("Do want Amigamenu to quit upon its execution?","Yes","No")
- IF wr%=-1 THEN a$="y"+a$
- IF wr%=0 THEN a$="n"+a$
- apps$(appsamt%-1)=a$
- MENU CLEAR
- CALL Adding(0)
- END IF
- END IF
- IF one%=2 THEN CALL RemoveApp
- IF one%=3 THEN CALL Snapshot
- IF one%=4 THEN CALL About
- END SUB
-
- SUB SelectItem(zero%,one%)
- SHARED appsamt%,apps$
- FOR looper%=2 TO (INT(appsamt%/10)+2)
- IF zero%=looper% THEN
- FOR count%=2 TO 11
- IF one%=count% THEN
- c$=apps$(count%-2+(looper%-2)*10)
- a$=Path$(c$)
- IF a$<>c$ THEN CHDIR MID$(a$,2,LEN(a$)-1)
- WINDOW OUTPUT 2 : CLS : PRINT"Executing ";MID$(c$,2,90);"...";
- a$="run >NIL: "+ MID$(c$,2,90)
- SYSTEM a$
- IF LEFT$(UCASE$(c$),1)="Y" THEN CALL Finished
- END IF
- NEXT count%
- END IF
- NEXT looper%
- END SUB
-
- SUB Finished
- WINDOW OUTPUT 2 : CLS : PRINT"See you later...";
- SYSTEM "CD AmigaMenu:"
- SYSTEM "assign AmigaMenu:"
- SLEEP FOR 1
- WINDOW CLOSE 2 : WINDOW CLOSE 1
- STOP
- END SUB
-
- SUB MenuItems
- SHARED apps$,appsamt%,NAME$
- FOR count%=1 TO appsamt%
- name$(count%-1)=FileName$(apps$(count%-1))
- NEXT count%
- END SUB
-
- SUB WindowConfig
- SHARED xm%,ym%,hm%,wm%
- windo&=WINDOW(7)
- xm%=PEEKW(windo&+4):ym%=PEEKW(windo&+6)
- wm%=WINDOW(2):hm%=WINDOW(3)
- END SUB
-
- SUB STRING Path$(pathname$)
- pe%=0:a$=pathname$:c$=a$ 'c$ is only needed to shorten statements
- REPEAT
- IF MID$(c$,LEN(c$)-pe%,1)="/" OR MID$(c$,LEN(c$)-pe%,1)=":" THEN a$=LEFT$(c$,(LEN(c$)-pe%))
- ++pe%
- UNTIL (pe%=LEN(c$)+1) OR a$<>c$
- Path$=a$
- END SUB
-
- SUB STRING FileName$(pathname$)
- c$=pathname$: ne%=0:b$=c$
- REPEAT
- IF MID$(c$,LEN(c$)-ne%,1)="/" OR MID$(c$,LEN(c$)-ne%,1)=":" THEN b$=RIGHT$(c$,ne%)
- ++ne%
- UNTIL (ne%=LEN(c$)+1) OR (b$<>c$)
- FileName$=b$
- END SUB
-
- '******Image2Sprite******
- DATA &H0000,&H0000
- 'Sprite Core Data Begins...
- DATA &HC007,&H3FF8 'Data Element: 1
- DATA &HC705,&H3FF8 'Data Element: 2
- DATA &HC867,&H3FF8 'Data Element: 3
- DATA &HC807,&H3FF8 'Data Element: 4
- DATA &HC867,&H3FF8 'Data Element: 5
- DATA &HC707,&H3FF8 'Data Element: 6
- DATA &HC007,&H3FF8 'Data Element: 7
- DATA &HC007,&H3FF8 'Data Element: 8
- DATA &HFFFF,&H0000 'Data Element: 9
- DATA &HFFFF,&H0000 'Data Element: 10
- DATA &HFFFF,&H0000 'Data Element: 11
- DATA &HFFFF,&H0FF0 'Data Element: 12
- DATA &HFFFF,&H09F0 'Data Element: 13
- DATA &HFFFF,&H09F0 'Data Element: 14
- DATA &HFFFF,&H09F0 'Data Element: 15
- DATA &H7FFF,&H0000 'Data Element: 16
- 'Sprite Core Data Ends.
- DATA &H0000,&H0000
- ' Total Data Size: 36
- '******By Sean J. Miller******
-
-